package mriso.documentos;

import java.util.Date;
import java.util.List;

import mriso.personas.Persona;

public class Version {
	private String titulo;
	private TipoDocumento tipo;
	private Persona owner;
	private Clasificacion clasificacion;
	private Auditoria auditoria;

	private String comentariosRevision;
	private String comentariosAprobacion;

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public TipoDocumento getTipo() {
		return tipo;
	}

	public void setTipo(TipoDocumento tipo) {
		this.tipo = tipo;
	}

	public Persona getOwner() {
		return owner;
	}

	public void setOwner(Persona owner) {
		this.owner = owner;
	}

	public Clasificacion getClasificacion() {
		return clasificacion;
	}

	public void setClasificacion(Clasificacion clasificacion) {
		this.clasificacion = clasificacion;
	}

	public String getComentariosRevision() {
		return comentariosRevision;
	}

	public void setComentariosRevision(String comentariosRevision) {
		this.comentariosRevision = comentariosRevision;
	}

	public String getComentariosAprobacion() {
		return comentariosAprobacion;
	}

	public void setComentariosAprobacion(String comentariosAprobacion) {
		this.comentariosAprobacion = comentariosAprobacion;
	}

	// como modelamos las versiones?
	// se puede acceder a la lista de versiones historicas de un documento
	// especifico?
	// que necesitamos guardar entre una version y otra?
	// seria ideal poder guardar diferencias y poder hacer rollback
	private List<Seccion> secciones;

	public Date getUltimaModificacion() {
		return auditoria.getUltimaModificacion();
	}

	public Persona getModificadoPor() {
		return auditoria.getModificadoPor();
	}

	public Date getUltimaRevision() {
		return auditoria.getUltimaRevision();
	}

	public Persona getRevisadoPor() {
		return auditoria.getRevisadoPor();
	}

	public Date getUltimaAprobacion() {
		return auditoria.getUltimaAprobacion();
	}

	public Persona getAprobadoPor() {
		return auditoria.getAprobadoPor();
	}

	public Date getFechaVigencia() {
		return auditoria.getFechaVigencia();
	}

	public Date getProximaRevision() {
		return auditoria.getProximaRevision();
	}

	public void add(int index, Seccion element) {
		secciones.add(index, element);
	}

	public boolean add(Seccion e) {
		return secciones.add(e);
	}

	public boolean isEmpty() {
		return secciones.isEmpty();
	}

	public int size() {
		return secciones.size();
	}

	// todos los doc tienen las mismas propiedades?
	// hay un set comun de propiedades y algunas propiedades exclusivas de
	// ciertos docs?
	// esto quizas sugiere armar una lista de propiedades
	
	
}
